import pandas as pd

# 读取CSV文件
data = pd.read_csv('music.csv')

# 提取年份信息并保存到一个新的列中
data["年份"] = data["publish_time"].str.extract('(\\d{4})', expand=False)

# 将年份信息转换为数值类型
data["年份"] = pd.to_numeric(data["年份"], errors='coerce')

# 根据每10年的区间进行分组
year_min = int(data["年份"].min())
year_max = int(data["年份"].max())
year_bins = range(year_min // 10 * 10, year_max // 10 * 10 + 11, 10)
labels = [f"{start}-{start+9}" for start in year_bins[:-1]]
data["year"] = pd.cut(data["年份"], bins=year_bins, labels=labels, right=False)

# 将评分列转换为数值类型
data["grade"] = pd.to_numeric(data["grade"], errors='coerce')

# 根据年份分组，并计算每个组的平均评分和歌曲数量
grouped_data = data.groupby("year", observed=False).agg({"music_name": "count", "grade": lambda x: round(x.mean(), 2)}).reset_index()
grouped_data.columns = ["year", "counts", "average_rating"]

# 将结果保存到CSV文件中
grouped_data.to_csv('song_counts.csv', index=False)



